package com.sinosoft.dsp.platform.components.portal.iteration;

import java.util.List;

import javax.faces.model.SelectItem;

import org.primefaces.event.SelectEvent;

import com.sinosoft.dsp.platform.exception.SinoPlatformException;

/**
 * 数据表格ViewBean，固定行内容的表格
 * 
 * @author 潘巍（Peter Pan）
 * @since 2011-5-8 下午02:35:17
 */
public interface ISinoDataTableViewBean<T extends IDataTableObject> extends
		IIterationViewBean<T> {

	public static final String SINO_VIEW_TYPE_GRID_ROW_NUMBER = "9,12,15";

	public static final String SINO_VIEW_TYPE_TABLE_ROW_NUMBER = "10,20,50,100";

	// 选择模式
	public String getSelectionMode();

	public void setSelectionMode(String selectionMode);

	// 视图类型
	public String getViewType();

	public void setViewType(String viewType);

	// 行数
	public String getRowsNumber();

	public void setRowsNumber(String rowsNumber);

	// 是否使用分页器
	public boolean isPaginator();

	public void setPaginator(boolean paginator);

	// 是否列可以调整宽度
	public boolean isResizableColumns();

	public void setResizableColumns(boolean resizableColumns);

	// 获得行记录
	public List<T> getRows() throws SinoPlatformException;

	// 选中的行
	public T[] getSelectedRows();

	public void setSelectedRows(T[] rows);

	public T getSelectedRow();

	public void setSelectedRow(T selectedRow);

	// 获得视图方式的选项
	public List<SelectItem> getViewTypeSelectItems();

	public void addRow(int index, T row) throws SinoPlatformException;

	// 获得行数选择项
	public String getRowsNumberSelectItems();

	// 行选择事件
	public void onRowSelect(SelectEvent event);

}
